<!--
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>当前库存查询</title>
<link rel="stylesheet" type="text/css" href="/static/insdep/insdep.easyui.min.css"></link>
<link rel="stylesheet" type="text/css" href="/static/insdep/icon.css"></link>
<link rel="stylesheet" type="text/css" href="/static/insdep/custom.css"></link>
	&lt;!&ndash;引入 js-xlsx 库文件&ndash;&gt;
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.18.5/xlsx.full.min.js"></script>
<script type="text/javascript" src="/static/jquery-easyui-1.5/jquery.min.js"></script>
<script type="text/javascript" src="/static/jquery-easyui-1.5/jquery.easyui.min.js"></script>
<script type="text/javascript" src="/static/jquery-easyui-1.5/locale/easyui-lang-zh_CN.js"></script>
<script type="text/javascript">



    function formatAmount(val,row){
		return "￥"+(row.inventoryQuantity*row.purchasingPrice).toFixed(2);
	}
    
    function formatGoodsTypeName(val,row){
		return row.type.name;
	}
    
    function formatLastPurchasingPrice(val,row){
		return "￥"+val;	
	}
	
    function formatPurchasingPrice(val,row){
		return "￥"+val;	
	}
	
	function formatSellingPrice(val,row){
		return "￥"+val;	
	}
	 
	function chooseGoodsType(){
		$("#dlg2").dialog("open").dialog("setTitle","选择商品类别");
		$("#typeTree").tree({
			url:'/admin/goodsType/loadTreeInfo',
			onLoadSuccess:function(node, data){
				var rootNode = $("#typeTree").tree('getRoot'); 
				$("#typeTree").tree('expand',rootNode.target);
			}
		});
	}
	
	function saveGoodsTypeChoose(){
		var node = $('#typeTree').tree('getSelected'); // 获取选中节点
		$("#typeId").val(node.id);
		$("#typeName").val(node.text);
		$("#dlg2").dialog("close");
	}
	
	function closeGoodsTypeChooseDialog(){
		$("#dlg2").dialog("close");
	}
	
	function searchStock(){
		$("#dg").datagrid('load',{
			"type.id":$("#typeId").val(),
			"codeOrName":$("#codeOrName").val()
		});
	}

	// 新增的exportExcel函数，用于将表格数据导出为Excel文件
	function exportExcel() {
		// 获取datagrid表格对象
		var dg = $('#dg').datagrid('getPanel');
		// 获取表格的表头行
		var trHeader = dg.find('thead tr');
		var headerRow = [];
		// 遍历表头单元格，获取列标题文本，添加到headerRow数组中
		trHeader.find('th').each(function () {
			headerRow.push($(this).text());
		});

		// 获取表格的所有数据行（除了表头行）
		var trBody = dg.find('tbody tr');
		var dataRows = [];
		trBody.each(function () {
			var rowData = {};
			// 遍历每行的单元格，以列的field属性作为键，单元格文本内容作为值，构建每行的数据对象
			$(this).find('td').each(function (index) {
				var field = $(this).closest('table').find('thead tr th').eq(index).attr('field');
				rowData[field] = $(this).text();
			});
			dataRows.push(rowData);
		});

		// 创建一个新的工作簿对象
		var wb = XLSX.utils.book_new();
		// 将数据转换为Sheet格式，第一个参数是数据数组（包含表头和数据行），第二个参数是配置对象，指定工作表名称等信息
		var ws = XLSX.utils.json_to_sheet([headerRow].concat(dataRows), { sheet_stub: true });
		// 将工作表添加到工作簿中，第一个参数是工作表名称，第二个参数是工作表对象
		XLSX.utils.book_append_sheet(wb, ws, '库存数据');
		// 将工作簿转换为Blob对象，以便后续创建下载链接
		var blob = XLSX.write(wb, { bookType: 'xlsx', type: 'blob' });
		// 创建一个临时的URL，用于下载文件
		var url = URL.createObjectURL(blob);

		// 创建一个 <a> 标签元素，用于触发文件下载
		var a = document.createElement('a');
		a.href = url;
		a.download = '库存数据.xlsx';
		// 将 <a> 标签添加到页面文档中
		document.body.appendChild(a);
		// 模拟点击 <a> 标签，触发文件下载
		a.click();
		// 下载完成后，移除临时的 <a> 标签和URL对象
		document.body.removeChild(a);
		URL.revokeObjectURL(url);
	}

</script>
</head>
<body style="margin: 1px">
<table id="dg" title="当前库存查询" class="easyui-datagrid"
   fitColumns="true" pagination="true" rownumbers="true" pageSize=20
   url="/admin/goods/listInventory" fit="true" toolbar="#tb">
   <thead>
   	<tr>
   		<th field="code" width="30" align="center">商品编码</th>
   		<th field="name" width="150" align="center">商品名称</th>
   		<th field="typeName" width="50" align="center" formatter="formatGoodsTypeName">类别</th>
   		<th field="model" width="50" align="center">型号</th>
   		<th field="inventoryQuantity" width="50" align="center">库存数量</th>
   		<th field="saleTotal" width="50" align="center">销售总数</th>
   		<th field="lastPurchasingPrice" width="50" align="right" formatter="formatLastPurchasingPrice">上次进价</th>
   		<th field="purchasingPrice" width="50" align="right" formatter="formatPurchasingPrice">成本均价</th>
   		<th field="sellingPrice" width="50" align="right" formatter="formatSellingPrice">销售价</th>
   		<th field="amount" width="60" align="right" formatter="formatAmount">库存总值</th>
   		<th field="unit" width="50" align="center" >单位</th>
   		<th field="producer" width="200" align="center">生产产商</th>
   		<th field="remarks" width="150" align="center" hidden=true>备注</th>
   	</tr>
   </thead>
 </table>
 
 <div id="tb">
 	<div style="padding: 5px">
 		&nbsp;商品类别&nbsp;
 		<input type="hidden" id="typeId"/>
 		<input type="text" id="typeName"  class="custom-text"  readonly="readonly" onclick="chooseGoodsType()"/>
		&nbsp;商品编码或者名称：&nbsp;<input type="text" id="codeOrName" size="20" class="easyui-textbox" onkeydown="if(event.keyCode==13) searchStock()"/>
 		<a href="javascript:searchStock()" class="easyui-linkbutton" iconCls="icon-search" plain="true">搜索</a>
		&lt;!&ndash;todo：exportExcel()&ndash;&gt;
		<a title="开发ing" href="javascript:exportExcel()" class="easyui-linkbutton" iconCls="icon-save" plain="true">保存为Excel</a>
 	</div>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
 </div>
 
 
  <div id="dlg2" class="easyui-dialog" style="width:180px;height:300px;padding: 10px 10px;top: 52px;left: 80px"
   closed="true" buttons="#dlg-buttons2">
   
   	<ul id="typeTree" class="easyui-tree"></ul>
  </div>
 
 <div id="dlg-buttons2">
 	<a href="javascript:saveGoodsTypeChoose()" class="easyui-linkbutton" iconCls="icon-ok" plain="true">选择</a>
 	<a href="javascript:closeGoodsTypeChooseDialog()" class="easyui-linkbutton" iconCls="icon-cancel" plain="true">关闭</a>
 </div>

</body>
</html>-->
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>当前库存查询</title>
	<link rel="stylesheet" type="text/css" href="/static/insdep/insdep.easyui.min.css"></link>
	<link rel="stylesheet" type="text/css" href="/static/insdep/icon.css"></link>
	<link rel="stylesheet" type="text/css" href="/static/insdep/custom.css"></link>
	<!-- 先引入js-xlsx库文件 -->
	<script type="text/javascript" src="/static/js/http_cdnjs.cloudflare.com_ajax_libs_xlsx_0.18.5_xlsx.full.min.js"></script>
	<script type="text/javascript" src="/static/jquery-easyui-1.5/jquery.min.js"></script>
	<script type="text/javascript" src="/static/jquery-easyui-1.5/jquery.easyui.min.js"></script>
	<script type="text/javascript" src="/static/jquery-easyui-1.5/locale/easyui-lang-zh_CN.js"></script>
	<script type="text/javascript">
		// 各种格式化函数定义不变
		function formatAmount(val, row) {
			return "￥" + (row.inventoryQuantity * row.purchasingPrice).toFixed(2);
		}

		function formatGoodsTypeName(val, row) {
			return row.type.name;
		}

		function formatLastPurchasingPrice(val, row) {
			return "￥" + val;
		}

		function formatPurchasingPrice(val, row) {
			return "￥" + val;
		}

		function formatSellingPrice(val, row) {
			return "￥" + val;
		}

		function chooseGoodsType() {
			$("#dlg2").dialog("open").dialog("setTitle", "选择商品类别");
			$("#typeTree").tree({
				url: '/admin/goodsType/loadTreeInfo',
				onLoadSuccess: function (node, data) {
					var rootNode = $("#typeTree").tree('getRoot');
					$("#typeTree").tree('expand', rootNode.target);
				}
			});
		}

		function saveGoodsTypeChoose() {
			var node = $('#typeTree').tree('getSelected');
			$("#typeId").val(node.id);
			$("#typeName").val(node.text);
			$("#dlg2").dialog("close");
		}

		function closeGoodsTypeChooseDialog() {
			$("#dlg2").dialog("close");
		}

		function searchStock() {
			$("#dg").datagrid('load', {
				"type.id": $("#typeId").val(),
				"codeOrName": $("#codeOrName").val()
			});
		}

		// exportExcel函数定义，用于将表格数据导出为Excel文件
		function exportExcel() {
			// 获取datagrid表格对象
			var dg = $('#dg').datagrid('getPanel');
			// 获取表格的表头行
			var trHeader = dg.find('thead tr');
			var headerRow = [];
			// 遍历表头单元格，获取列标题文本，添加到headerRow数组中
			trHeader.find('th').each(function () {
				headerRow.push($(this).text());
			});

			// 获取表格的所有数据行（除了表头行）
			var trBody = dg.find('tbody tr');
			var dataRows = [];
			trBody.each(function () {
				var rowData = {};
				// 遍历每行的单元格，以列的field属性作为键，单元格文本内容作为值，构建每行的数据对象
				$(this).find('td').each(function (index) {
					var field = $(this).closest('table').find('thead tr th').eq(index).attr('field');
					rowData[field] = $(this).text();
				});
				dataRows.push(rowData);
			});

			// 创建一个新的工作簿对象
			var wb = XLSX.utils.book_new();
			// 将数据转换为Sheet格式，第一个参数是数据数组（包含表头和数据行），第二个参数是配置对象，指定工作表名称等信息
			var ws = XLSX.utils.json_to_sheet([headerRow].concat(dataRows), { sheet_stub: true });
			// 将工作表添加到工作簿中，第一个参数是工作表名称，第二个参数是工作表对象
			XLSX.utils.book_append_sheet(wb, ws, '库存数据');
			// 将工作簿转换为Blob对象，以便后续创建下载链接
			var blob = XLSX.write(wb, { bookType: 'xlsx', type: 'blob' });
			// 创建一个临时的URL，用于下载文件
			var url = URL.createObjectURL(blob);

			// 创建一个 <a> 标签元素，用于触发文件下载
			var a = document.createElement('a');
			a.href = url;
			a.download = '库存数据.xlsx';
			// 将 <a> 标签添加到页面文档中
			document.body.appendChild(a);
			// 模拟点击 <a> 标签，触发文件下载
			a.click();
			// 下载完成后，移除临时的 <a> 标签和URL对象
			document.body.removeChild(a);
			URL.revokeObjectURL(url);
		}
	</script>
</head>
<body style="margin: 1px">
<table id="dg" title="当前库存查询" class="easyui-datagrid"
	   fitColumns="true" pagination="true" rownumbers="true" pageSize=20
	   url="/admin/goods/listInventory" fit="true" toolbar="#tb">
	<thead>
	<tr>
		<th field="code" width="30" align="center">商品编码</th>
		<th field="name" width="150" align="center">商品名称</th>
		<th field="typeName" width="50" align="center" formatter="formatGoodsTypeName">类别</th>
		<th field="model" width="50" align="center">型号</th>
		<th field="inventoryQuantity" width="50" align="center">库存数量</th>
		<th field="saleTotal" width="50" align="center">销售总数</th>
		<th field="lastPurchasingPrice" width="50" align="right" formatter="formatLastPurchasingPrice">上次进价</th>
		<th field="purchasingPrice" width="50" align="right" formatter="formatPurchasingPrice">成本均价</th>
		<th field="sellingPrice" width="50" align="right" formatter="formatSellingPrice">销售价</th>
		<th field="amount" width="60" align="right" formatter="formatAmount">库存总值</th>
		<th field="unit" width="50" align="center">单位</th>
		<th field="producer" width="200" align="center">生产产商</th>
		<th field="remarks" width="150" align="center" hidden=true>备注</th>
	</tr>
	</thead>
</table>

<div id="tb">
	<div style="padding: 5px">
		&nbsp;商品类别&nbsp;
		<input type="hidden" id="typeId" />
		<input type="text" id="typeName" class="custom-text" readonly="readonly" onclick="chooseGoodsType()" />
		&nbsp;商品编码或者名称：&nbsp;
		<input type="text" id="codeOrName" size="20" class="easyui-textbox" onkeydown="if(event.keyCode == 13) searchStock()" />
		<a href="javascript:searchStock()" class="easyui-linkbutton" iconCls="icon-search" plain="true">搜索</a>
	</div>
</div>


<div id="dlg2" class="easyui-dialog" style="width: 180px; height: 300px; padding: 10px 10px; top: 52px; left: 80px"
	 closed="true" buttons="#dlg-buttons2">

	<ul id="typeTree" class="easyui-tree"></ul>
</div>

<div id="dlg-buttons2">
	<a href="javascript:saveGoodsTypeChoose()" class="easyui-linkbutton" iconCls="icon-ok" plain="true">选择</a>
	<a href="javascript:closeGoodsTypeChooseDialog()" class="easyui-linkbutton" iconCls="icon-cancel" plain="true">关闭</a>
</div>

</body>
</html>